#ifndef DW_SYSTEM_WINDOW_EVENT_ARG_H
#	define DW_SYSTEM_WINDOW_EVENT_ARG_H

#include "system/window.h"

namespace dw {
	namespace system {

class Window::EventArg
{
public : //! @name Construction & destruction
	//! @{
	EventArg() { ; }
	virtual ~EventArg() { ; }
	//! @}
};

class Window::PaintEventArg
:	public EventArg
{
};

class Window::MoveEventArg
:	public EventArg
{
public : //! @name Construction & destruction
	//! @{
	MoveEventArg(int32 oldLeft, int32 oldTop, int32 newLeft, int32 newTop) { ; }
	//! @}
};

class Window::SizeEventArg
:	public EventArg
{
public : //! @name Construction & destruction
	//! @{
	SizeEventArg(uint32 oldWidth, uint32 oldHeight, uint32 newWidth, uint32 newHeight) { ; }
	//! @}
};

class Window::MouseEventArg
:	public EventArg
{
public : //! @name Construction & destruction
	//! @{
	MouseEventArg() { ; }
	//! @}
};

class Window::KeyEventArg
:	public EventArg
{
public : //! @name Construction & destruction
	//! @{
	KeyEventArg(int32 key) : m_key(key) { ; }
	//! @}

public : //! @name State
	//! @{
	int32 getKey() const { return m_key; }
	//! @}

private : //! @name Data
	//! @{
	const int32 m_key;
	//! @}
};

	} // namespace system
} // namespace dw

#endif // !DW_SYSTEM_WINDOW_EVENT_ARG_H
